#ifndef __VTOR_INFRARED_H__
#define __VTOR_INFRARED_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "vtor_elec_module_config.h"

#ifdef __VTOR_INFRARED__


// 红外接收解析
// https://www.cnblogs.com/FBsharl/p/18013105
// 记得容忍误差    +-200us
#define VtorInfrared_AroundTime	(200)

//        低电平时长   高电平时长
// 常态       0         无限
// 引导码   9000us     4500us
#define VtorInfrared_BootTime	(9000 + 4500)
// bit1      560us     1680us
#define VtorInfrared_Bit1Time	(560 + 1680)
// bit0      560us      560us
#define VtorInfrared_Bit0Time	(560 + 560)



extern uint8_t VtorInfrared_rxTimeout;
extern uint8_t VtorInfrared_fallIrqCnt;

// timer相关 启动 停止 获取与上一次的间隔时间
void VtorInfrared_StartTimer(void);
void VtorInfrared_StopTimer(void);
int32_t VtorInfrared_GetIntervalTime(void);

// 
// io相关 初始化
uint8_t VtorInfrared_ReadPin(void);
void VtorInfrared_Init(void);
void VtorInfrared_ExtiIrqHandler(void);


// 定时器中断机制 （可选）
//void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)；
// 轮询机制 （可选）
void VtorInfrared_RxTask();


// 单字节接收中断回调
void VtorInfrared_RecvByteCallback(uint8_t rxByte);


#endif // __VTOR_INFRARED__

#endif
